﻿/***********************************************************************************************
 * 
 * ProjectName: WMSSoft.Lib.Interfaces
 * 
 * Description: Provide the Interface to describe a start menu item used on WinKStart
 * 
 * Created:     21.07.2014
 * 
 * Author:      matthias wagler - matthias@WMSSoft.de
 * 
 * Copyright:   Copyright 2014 by WMSSoft.de
 * 
 * License:     GPLv3
 * 
 * History:     21.07.2014 - matthias wagler matthias@WMSSoft.de   -   Created
 * 
 **********************************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WMSSoft.Lib.Enums;

namespace WMSSoft.Lib.Interfaces
{
    public interface iWinKStartItem
    {
        #region Properties

        int FontSize { get;  }

        string FontName { get; }

        string Filter { get; set; }

        System.Windows.Media.Color FontColor { get; }

        System.Windows.TextAlignment TextAlign { get; }

        int ItemHeight { get; }

        System.Windows.VerticalAlignment VerticalAlign { get; }

        eExecutionProcedure ExecutingProcedure { get; }

        eLinkExecutionTypes ExecutionType { get; }

        int WindowsStyle { get; }

        string HotKey { get; }

        string WorkingDirectory { get; }

        string FolderMenuPath { get; }

        iWinKStartItem Parent { get; }

        List<string> LinkItemList { get; }

        System.Drawing.Icon ItemIcon { get; }

        System.Windows.Media.Imaging.BitmapImage Image { get; }

        List<string> FolderItemKeys { get; }

        Dictionary<string, string> LinkDisplayNames { get; }

        Dictionary<string, string> FolderDisplayNames { get; }

        Dictionary<string, object> ChildItems { get;}

        eItemType ItemType { get; }

        string ViewName { get; }

        string ItemName { get; }

        string LinkFilename { get; }

        string Arguments { get; }

        string FolderPath { get; }

        string AllUsersStartMenuPath { get; set; }

        string UserStartMenuPath { get; set; }

        eContentPanelContentType ContentType { get; set; }

        string GroupID { get; set; }

        #endregion

        #region Methods

        /// <summary>
        /// Copy this instance to a new instance
        /// </summary>
        /// <returns></returns>
        iWinKStartItem Copy();

        ///// <summary>
        ///// This Method create a new StartmenuItem Instance from an given Item (Filesystem - Object)
        ///// </summary>
        ///// <param name="Item">a Filesystem - Object </param>
        ///// <returns>StartmenuItem instance, null if an error has been found</returns>
        //static iStartMenuItem MakeInstance(string Item, iStartMenuItem Parent, bool LoadImage = true);

        /// <summary>
        /// Adds a child to the StartmenuItem
        /// </summary>
        /// <param name="Item">Item to add</param>
        bool AddChild(iWinKStartItem Item);

        /// <summary>
        /// Adds a List of StartmenuItems
        /// </summary>
        /// <param name="Childs">List to Add</param>
        /// <returns></returns>
        bool AddChilds(Dictionary<string, object> Childs);

        /// <summary>
        /// Remove a StartmenuItem
        /// </summary>
        /// <param name="Key">Key To Remove</param>
        void RemoveChild(string Key);

        #endregion


    }
}
